/*
编写 : Hexh
时间 : 2012-5-24 15:41:23
*/
using System.Collections.Generic;
using HMIS.FrameWork;
using HMIS.FrameWork.DomainBase;
using HMIS.Infrastructure.Core.Entities;

namespace HMIS.Infrastructure.Facade
{
	/// <summary>
	///	 the interface of IInfraApproveFacade
	/// </summary>
	public interface IInfraApproveFacade : IDomainFacade
	{

		InfraApprove Get(string id);

		InfraApprove GetByDeptAndType(string deptId, string approveType);

		InfraApprove Load(string id);

		void SaveOrUpdate(InfraApprove entity);

		void Delete(string id);

		void PhysicsDelete(string id);

		bool IsFieldExist(string fieldName, string fieldValue, string id);

		bool IsFieldExist(string fieldName, string fieldValue, string id, string where);

		IList<InfraApprove> GetAll();

		IList<InfraApprove> GetPlist(string query, int start, int limit, string sort, string dir, List<DataFilter> filters, out long total);

		bool InitApproveLog(string approveId, string itemId, string smsContent);

		InfraApproveLog GetApproveLogStepById(string Id);

		int ProcedureApprove(InfraApproveLog logstep);

		InfraApproveHisStep ApproveProcess(string stepId, string inputUserNa, string inputUserPw, string inputApprCode, int inputApprState);

		int GetApproveState(string itemId);

		bool SendApproveCodeSms(string stepId);
	}
}
